<?php
namespace Admin\Controller;
use Think\Controller;
class AdminController extends ConmonController {
    //获取验证码
    public function getCode(){
        $Verify = new \Think\Verify();
        $Verify->fontSize = 22;
        $Verify->length   = 4;
        $Verify->useNoise = false;
        $Verify->entry();

    }


    //登录页面加载 验证码验证
    public function login(){
         $Verify = new \Think\Verify();
     if (IS_POST) {


        $code= I('post.code'); //这是提取页面上打字输入的code即验证码

        $username=I('post.username');
        $password=md5(I('post.password'));

        $cofir= $Verify->check($code);

        //给function.php中定义的函数check_code，然后它返回真假
        if(!$cofir){
            $this->error('验证码错误','',1);
        }else{
            $data = $this->MODEL->where("username='$username' AND password='$password'")->find();
            if(!empty($data)){

                // print_r($data);die;
                session('user',$data);

                // print_r($user);die;

                $this->success('登录成功',U('admin/index/index'),1);
                //登录成功后将用户名和密码存入session

            }else{
                $this->error('用户名或者密码错误',' ',1);
            }
            die;
        }
    }

        $this->display();

    }

    //退出
    public function logout(){
        //清除session（'user'）
        session('user',null);
        //重定向到login页面
       redirect('http://localhost/my_shop/index.php/admin/admin/login.html', 5, '页面跳转中...');
    }


    //添加员工
    public function add(){

        //查询角色表，在添加管理员页面显示
        $group = D('group');
        $role = $group->select();
        // print_r($role);die;
        if(IS_POST){


            // 如果图片数组不为空，则调用图片上传函数，把返回的图片存储路径存入post数组中，一起存入数据库
            if(!empty($_FILES)){
               $save = $this->upload();
               $_POST['avatar']=$save;
            }

            // 对提交的密码md5加密
            $_POST['password']=md5(I('post.password'));

             //已经在公共类动态实例化对应的数据库
            $id = $this->MODEL->data(I('post.'))->add();

            $data['group_id'] =I('post.group_id');
            $data['uid']=$id;
            //将数据写入关系表中
            D('group_access')->data($data)->add();

            if($id){
                //将刚插入的员工数据id存入关系表中

                //将提交上来的角色id存入关系表中

                $this->success('添加成功',U('Admin/lists'),1);die;
            }else{
                $this->error('添加失败','',2);die;
            }

        }

        $this->assign('role',$role);
        $this->display();

    }


    //文件上传方法
   public function upload(){
       $upload = new \Think\Upload();// 实例化上传类
       $upload->maxSize   =     3145728 ;// 设置附件上传大小
       $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
       $upload->rootPath  =       'Uploads/';   //根目录
       $upload->savePath  =      'icon/'; // 设置附件上传目录

       $info   =   $upload->uploadOne($_FILES['avatar']); // 上传单个文件

       // var_dump($info);die;
       // 拼接图片的保存路径
       $save= './Uploads/'.$info['savepath'].$info['savename'];

    return $save;
 }

    //获取员工列表
    public function lists (){


        $count      = $this->MODEL->count();// 查询满足要求的总记录数
        $Page       = new \Think\Page_nav($count,5);// 实例化分页类 传入总记录数和每页显示的记录数(25)
        $Page->setConfig('prev','上一页');
        $Page->setConfig('next','下一页');
        $Page->setConfig('first','第一页');
        $Page->setConfig('last','尾页');
        $show       = $Page->show();// 分页显示输出// 进行分页数据查询 注意limit方法的参数要使用Page类的属性
        $list = $this->MODEL->order('id asc')->limit($Page->firstRow.','.$Page->listRows)->select();

        // print_r($list);die;
        $this->assign('list',$list);// 赋值数据集
        $this->assign('page',$show);// 赋值分页输出


        $this->display();
    }


    public function edit(){

        $group = D('group');
        $role = $group->select();

        //print_r(I('get.id'));die;获取到正在编辑的数据id
        $id =  I('get.id');
        //查询该数据id的数据
        $list = $this->MODEL->where("id=$id")->find();
        //print_r($list['avatar']);die;


        //更改头像
          if(IS_POST){

            // print_r($_POST);die;
            //获取到原来的图片路径,存入数据库
            $_POST['avatar']= $list['avatar'];

            //如果更改了头像，$_FILES就会有信息。则执行图像上传函数
            if(!empty($_FILES['avatar']['name'])){

                    //删除原来的图片，保存更改的图片
                    unlink('./'.$list['avatar']);

                    $save= $this->upload();

                    //把路径存到post的avatar的下标中
                    $_POST['avatar']=$save;
                }

             //已经在公共类动态实例化对应的数据库，对正在编辑的数据进行更新
            $row = $this->MODEL->where("id=$id")->save(I('post.'));

            //对角色和用户的关系表进行更新
               D('group_access')->where("uid=$id")->setField('group_id',I('post.group_id'));
            //print_r($row);die;
            if($row){
                $this->success('更改成功',U('Admin/lists'),1);die;
            }else{
                $this->error('更改失败','',1);die;
            }
        }

        $this->assign('role',$role);
        $this->assign('list',$list);
        $this->display();

}

    public function del(){

        $id=I('get.id');

        $row=$this->MODEL->where("id=$id")->delete();
         if($row){
           $this-> success('删除成功',U('admin/lists') , 0);die;
        }else{
            $this->error('删除失败',' ',1 );die;
        }
    }

    //发送短信
    public function send(){

        //获取ajax传来的电话号码
        $tel = I('post.tel');

        Vendor('Sms.httpUtil');//加载第三方类库

        /*实例化刚刚修改的 类httpUtil*/
        $send = new \httpUtil;

        $funAndOperate = "industrySMS/sendSMS";

        //简单随机生成6位数验证码
        $code=mt_rand(100000,999999);

        //把随机数存入session中，用于动态验证
        session('code',"$code");
        // 生成body
        $body = $send->createBasicAuthData();

        // 在基本认证参数的基础上添加短信内容和发送目标号码的参数
        $body['smsContent'] = "【WD科技】您的验证码为".$code."，请于5分钟内正确输入，如非本人操作，请忽略此短信。";

        $body['to'] =$tel ;

        // 提交请求
        $result = $send->post($funAndOperate, $body);

        //将返回的结果进行json反编译，后面用true属性转成php的数组
        $status = json_decode($result,true);

        //取到数组里的respCode下标的编码，为00000代表发送成功
        echo $status['respCode']==00000?1:0;

    }

    //实时验证手机校验码
    public function confirm_code(){
            //获取到get提交过来的数据
            $code = I('get.code');

            /*获取到发送时存入session中的数据*/
            $code_s=session('code');

            if($code==$code_s){
                echo 1;
            }else{
                echo 0;
            }
    }



}